import psutil

"""
psutil是一个用于检索信息的跨平台库
运行进程和系统利用率(CPU、内存、磁盘、网络，在Python中传感器)。

psutil使得Python程序获取系统信息变得易如反掌。
psutil还可以获取用户信息、Windows服务等很多有用的系统信息，具体请参考psutil的官网：https://github.com/giampaolo/psutil
"""
# 1、cpu
cpu_count = psutil.cpu_count()  # CPU逻辑数量
print(f"机器 cpu 逻辑核数量为{cpu_count}")
cpu2_count = psutil.cpu_count(logical=False)  # CPU物理核心
print(f"机器 cpu 物理核数量为{cpu2_count}")
# 获取CPU的使用率
cpu_usage = psutil.cpu_percent(interval=1)
print(f"机器 cpu 使用率为 {cpu_usage}")

# 2、内存
memory = psutil.virtual_memory()
memory_total = memory.total /1024/1024/1024
memory_used = memory.used /1024/1024/1024
print(f"机器 内存的使用情况为 {memory},total memory is {memory_total},used memory is {memory_used}")
virtual_memory = psutil.virtual_memory()
print(f"机器 虚拟内存的使用情况为 {virtual_memory}")
swap_memory = psutil.swap_memory()
print(f"机器 交换内存的使用情况为 {swap_memory}")

# 3、磁盘分区信息
disk_partitions = psutil.disk_partitions()
print(f"机器 磁盘分区信息为 {disk_partitions}")

# psutil.disk_usage('/') # 磁盘使用情况

# 4、磁盘IO
disk_io_counters = psutil.disk_io_counters()
print(f"机器 磁盘IO信息为 {disk_io_counters}")

# 5、网络
net_io_counters = psutil.net_io_counters()  # 获取网络读写字节／包的个数
print(f"机器 获取网络读写字节／包的个数为 {net_io_counters}")

net_if_addrs = psutil.net_if_addrs()  # 获取网络接口信息
print(f"机器 获取网络接口信息为 {net_if_addrs}")

net_if_stats = psutil.net_if_stats()  # 获取网络接口状态
print(f"机器 获取网络接口状态为 {net_if_stats}")

net_connections = psutil.net_connections()  # 获取当前网络连接信息
print(f"机器 当前网络连接信息为 {net_connections}")

# 6、进程
all_pids = psutil.pids()
print(f"机器 所有进程信息为 {all_pids}")
